﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUS;
using DTO;

namespace GUI
{
    public partial class FormSuaPhieuNhap : Window
    {
        private static int madhang;
        public int MaDHang
        {
            get { return madhang; }
            set { madhang = value; }
        }

        private static int maphieu;
        public int MaPhieu
        {
            get { return maphieu; }
            set { maphieu = value; }
        }
        
        private static int slbd;
        public int SLBD
        {
            get { return slbd; }
            set { slbd = value; }
        }
        public FormSuaPhieuNhap()
        {
            InitializeComponent();
        }

        private void btnChapNhan_Click(object sender, EventArgs e)
        {
                // Sua Phieu Nhap
               
                if (cbbMaPN.SelectedItem == null)
                {
                    MessageBox.Show("Chưa chọn mã phiếu cần sửa", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                if (txtMaDH == null)
                {
                    MessageBox.Show("Chưa nhập mã đơn hàng  ", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                if ( cbbMaNguoiNhan.SelectedItem == null)
                {
                    MessageBox.Show("Chưa chọn mã người nhận cần sửa", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

               
                
                PhieuNhapDTO pnDTO = new PhieuNhapDTO();
                pnDTO.MaPN = (int)cbbMaPN.SelectedItem;
                pnDTO.NgayNhap = dtpNgayNhap.Value;
                pnDTO.MaDH = int.Parse(txtMaDH.Text.ToString());
                pnDTO.MaNV = (int)cbbMaNguoiNhan.SelectedValue;
                if (txtGhiChu.Text.Length != 0)
                {
                    pnDTO.GhiChu = txtGhiChu.Text.Trim();
                }
                else
                {
                    pnDTO.GhiChu = " ";
                }
                
               
                // Bot so luong SP cu
                CTPhieuNhapBUS busCT = new CTPhieuNhapBUS();
                List<CTPhieuNhapDTO> list = busCT.LayCTPhieuNhap(pnDTO.MaPN);

                SPBUS spbus = new SPBUS();

                CTDHBUS ctdhbus = new CTDHBUS();

                for (int i = 0; i < list.Count; i++)
                {
                    spbus.CapNhatThemSanPham(list[i].MaSP, -list[i].SoLuong);
                    BUS.SPBUS.capnhatsodu(list[i].MaSP, -list[i].SoLuong, dtpNgayNhap.Value);
                    ctdhbus.CapNhatSoLuongConLai(pnDTO.MaDH, list[i].MaSP , list[i].SoLuong);
                }
                
                //Sua chi tiet phieu nhap
                CTPhieuNhapBUS xoaCT = new CTPhieuNhapBUS();
                xoaCT.XoaChiTiet(pnDTO.MaPN);
                for (int i = 0; i < dataGridViewCTPN.Rows.Count ; i++)
                {   
                    // Them so luong SP moi  
                    spbus.CapNhatThemSanPham(int.Parse(dataGridViewCTPN[0, i].Value.ToString()) , int.Parse(dataGridViewCTPN[3, i].Value.ToString()));
                    BUS.SPBUS.capnhatsodu(int.Parse(dataGridViewCTPN[0, i].Value.ToString()), int.Parse(dataGridViewCTPN[3, i].Value.ToString()), dtpNgayNhap.Value);
                    ctdhbus.CapNhatSoLuongConLai(pnDTO.MaDH, int.Parse(dataGridViewCTPN[0, i].Value.ToString()),-  int.Parse(dataGridViewCTPN[3, i].Value.ToString()));
                    // sua chi tiet
                    CTPhieuNhapDTO ctDTO = new CTPhieuNhapDTO();
                    ctDTO.MaPN = pnDTO.MaPN;
                    ctDTO.MaSP = int.Parse(dataGridViewCTPN[0, i].Value.ToString());
                    ctDTO.NgayNhap = pnDTO.NgayNhap;
                    ctDTO.SoLuong = int.Parse(dataGridViewCTPN[3, i].Value.ToString());
                    CTPhieuNhapBUS bus1 = new CTPhieuNhapBUS();
                    int temp = bus1.ThemChiTiet(ctDTO);
                }
                // Sua phieu nhap
                PhieuNhapBUS pnbus = new PhieuNhapBUS();
                int kq = pnbus.SuaPhieuNhap(pnDTO);
                MessageBox.Show("Sửa thành công");
                Close();
            

        }


        public void Load_Page_SuaPhieuNhap()
        {
            cbbMaPN.SelectedItem = null;
            txtMaDH = null;
            cbbMaNguoiNhan.SelectedItem = null;
            dataGridViewCTPN.Rows.Clear();
        }


        private void btnHuy_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void FormSuaPhieuNhap_Load(object sender, EventArgs e)
        {
            txtMaDH.Enabled = false;
            // Load MaPN 
            PhieuNhapBUS pnBus = new PhieuNhapBUS();
            List<PhieuNhapDTO> dsPhieuNhap = pnBus.LayDSPhieuNhap();
            for (int i = 0; i < dsPhieuNhap.Count(); i++)
                cbbMaPN.Items.Add(dsPhieuNhap[i].MaPN);

            //load MaNV

            NhanVienBUS nvBus = new NhanVienBUS();
            List<NhanVienDTO> dsNhanVien = nvBus.LayDSNV();
            cbbMaNguoiNhan.DataSource = dsNhanVien;
            cbbMaNguoiNhan.DisplayMember = "HoTen";
            cbbMaNguoiNhan.ValueMember = "MaNV";


            FormDSPhieuNhap dspn = new FormDSPhieuNhap();
            if (dspn.Co == 0)
            {
                btnSua.Enabled = false;
            }
            else
            {
                cbbMaPN.SelectedItem = dspn.Ma_PN;
                txtMaDH.Text = dspn.MaDH_PN.ToString();
                cbbMaNguoiNhan.SelectedItem = dspn.MaNV_PN;
                dtpNgayNhap.Value = dspn.NgayNhap_PN;
                txtGhiChu.Text = dspn.GhiChu_PN;
                 
                // Tat cac form va nut chap nhan
                cbbMaPN.Enabled = false;
                txtMaDH.Enabled = false;
                cbbMaNguoiNhan.Enabled = false;
                dtpNgayNhap.Enabled = false;
                txtGhiChu.Enabled = false;
                dataGridViewCTPN.Enabled = false;
                btnChapNhan.Enabled = false;
            }
        }

        public void Load_Sua_DSSP()
        {
            //load MaSP
            CTDHBUS chitietbus = new CTDHBUS();
            List<CTDatHangDTO> danhsach = chitietbus.LayDSCTDatHang(MaDHang);
            dataGridViewCTPN.Rows.Clear();
            for (int i = 0; i < danhsach.Count(); i++)
            {
                SPBUS sp = new SPBUS();
                string ten = sp.LayTenSP(danhsach[i].MaSP);

                CTPhieuNhapBUS ctpnbus = new CTPhieuNhapBUS();
                int soluongdanhap = ctpnbus.LaySoLuongSPDaNhap(MaPhieu,danhsach[i].MaSP);

                dataGridViewCTPN.Rows.Add(danhsach[i].MaSP, ten, danhsach[i].SoLuong,soluongdanhap);
            }
        }

        public void Load_SoLuong()
        {
            for (int i = 0; i < dataGridViewCTPN.RowCount; i++)
                dataGridViewCTPN[3, i].Value = 0;
        }
      

        private void dataGridViewCTPN_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            // Kiem tra So Luong
            CTDHBUS ctb = new CTDHBUS();
            List<CTDatHangDTO> ds = ctb.LayDSCTDatHang(MaDHang);
            for (int i = 0; i < dataGridViewCTPN.RowCount ; i++)
            {

                if (dataGridViewCTPN[3, i].Value == null)
                {
                    MessageBox.Show("Chưa nhập số lượng sản phẩm", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Load_SoLuong();
                    return;
                }

                string sanpham = dataGridViewCTPN[3, i].Value.ToString();
                for (int j = 0; j < sanpham.Length; j++)
                {
                    if (char.IsDigit(sanpham[j]) == false)
                    {
                        MessageBox.Show("Kiểu dữ liệu của giá trị Số lượng chưa hợp lệ ", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        Load_SoLuong();
                        return;
                    }
                }

                if (int.Parse(dataGridViewCTPN[3, i].Value.ToString()) < 0)
                {
                    MessageBox.Show("Giá trị số lượng phải >= 0", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Load_SoLuong();
                    return;
                }
            }

            int row = dataGridViewCTPN.CurrentRow.Index;
            int SLTruocKhiThayDoi = SLBD ;
            int SLSauKhiThayDoi = int.Parse(dataGridViewCTPN[3, row].Value.ToString());
            CTDHBUS ctdhbus = new CTDHBUS();
            int ConLai = ctdhbus.LaySoLuongConLai(MaDHang,int.Parse(dataGridViewCTPN[0,row].Value.ToString()));
            int SoLuongDat = int.Parse(dataGridViewCTPN[2,row].Value.ToString());
            if( ConLai <  ( SLSauKhiThayDoi - SLTruocKhiThayDoi ) )
            {
                 MessageBox.Show("Tổng số sản phẩm nhập vượt quá số lượng đặt", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 Load_Sua_DSSP();
                 return;
            }
                

            
        }

        private void cbbMaPN_SelectedIndexChanged(object sender, EventArgs e)
        {
            MaPhieu = (int)cbbMaPN.SelectedItem;
            DHBUS dhbus = new DHBUS();
            List<DatHangDTO> dsDH = dhbus.LayMaDonHangTrongPhieuNhap(MaPhieu);
            //cbbMaDH.SelectedItem = null;
            //cbbMaDH.Items.Clear();
            //for (int i = 0; i < dsDH.Count(); i++)
            //    cbbMaDH.Items.Add(dsDH[i].MaDH);
            txtMaDH.Text = dsDH[0].MaDH.ToString();

        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            cbbMaNguoiNhan.Enabled = true;
            dtpNgayNhap.Enabled = true;
            txtGhiChu.Enabled = true;
            dataGridViewCTPN.Enabled = true;
            btnChapNhan.Enabled = true;

            btnSua.Enabled = false;
        }

        private void dataGridViewCTPN_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
        {
            int row = dataGridViewCTPN.CurrentRow.Index;
            SLBD = int.Parse(dataGridViewCTPN[3,row].Value.ToString());
        }

        private void txtMaDH_TextChanged(object sender, EventArgs e)
        {
            if (txtMaDH != null)
                MaDHang = int.Parse(txtMaDH.Text);
            else
                MaDHang = 0;
            Load_Sua_DSSP();
        }

    }
}
